package com.cictec.middleware.tde.rm.protocol.rm.message;

import java.util.Date;

import com.cictec.middleware.tde.rm.protocol.TerminalMessage;

/**
 * 0x03 上传进出定点数据
 * 
 * @author Zhibin
 *
 */
public class Rm0x03TerminalMessage extends TerminalMessage {

	private static final long serialVersionUID = -4854763486655159590L;
	
	/** 产生时间 HEX 4 字节 数据包产生的时间 */
	private Date createTime;
	/** 纬度 HEX 4 字节 见数据定义 */
	private double lat;
	/** 经度 HEX 4 字节 见数据定义 */
	private double lng;
	/** 速度 HEX 1 字节 单位为公里/小时 */
	private int speed;
	/** 方位角 HEX 1 字节 除以 2 后取整 */
	private int angle;
	/** 海拔高度 HEX 2 字节 单位为米 */
	private int altitude;
	/** 定点类型 HEX 1 字节 见定点类型表 【0x01 公交站点、0x02 拐弯点（进出标识都为 0）、0x03 安全事故黑点（进出标识都为 0）、0x04 标杆】*/
	private int positionType;
	/** 定点编号 HEX 1 字节 根据不同的定点类型编号 */
	private int positionNumber;
	/** 进出标识 HEX 1 字节 0 为进入，1 为离开 */
	private int enterOutStatus;
	/** 触发类型 HEX 1 字节 0：表示自动触发 1：表示手动触发 2：表示调试数据 3:wifi 报站类型 */
	private int triggerType;
	/** 上车乘客数 HEX 1 字节 */
	private int getOnNumber;
	/** 下车乘客数 HEX 1 字节 */
	private int getOffNumber;
	/** 预留 HEX 2 字节 预留 */
	private int reserved;

	public Rm0x03TerminalMessage(Header header) {
		super(header);
	}

	/** 产生时间 HEX 4 字节 数据包产生的时间 */
	public Date getCreateTime() {
		return createTime;
	}

	/** 产生时间 HEX 4 字节 数据包产生的时间 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	/** 纬度 HEX 4 字节 见数据定义 */
	public double getLat() {
		return lat;
	}

	/** 纬度 HEX 4 字节 见数据定义 */
	public void setLat(double lat) {
		this.lat = lat;
	}

	/** 经度 HEX 4 字节 见数据定义 */
	public double getLng() {
		return lng;
	}

	/** 经度 HEX 4 字节 见数据定义 */
	public void setLng(double lng) {
		this.lng = lng;
	}

	/** 速度 HEX 1 字节 单位为公里/小时 */
	public int getSpeed() {
		return speed;
	}

	/** 速度 HEX 1 字节 单位为公里/小时 */
	public void setSpeed(int speed) {
		this.speed = speed;
	}

	/** 方位角 HEX 1 字节 除以 2 后取整 */
	public int getAngle() {
		return angle;
	}

	/** 方位角 HEX 1 字节 除以 2 后取整 */
	public void setAngle(int angle) {
		this.angle = angle;
	}

	/** 海拔高度 HEX 2 字节 单位为米 */
	public int getAltitude() {
		return altitude;
	}

	/** 海拔高度 HEX 2 字节 单位为米 */
	public void setAltitude(int altitude) {
		this.altitude = altitude;
	}

	/** 定点类型 HEX 1 字节 见定点类型表 【0x01 公交站点、0x02 拐弯点（进出标识都为 0）、0x03 安全事故黑点（进出标识都为 0）、0x04 标杆】*/
	public int getPositionType() {
		return positionType;
	}

	/** 定点类型 HEX 1 字节 见定点类型表 【0x01 公交站点、0x02 拐弯点（进出标识都为 0）、0x03 安全事故黑点（进出标识都为 0）、0x04 标杆】*/
	public void setPositionType(int positionType) {
		this.positionType = positionType;
	}

	/** 定点编号 HEX 1 字节 根据不同的定点类型编号 */
	public int getPositionNumber() {
		return positionNumber;
	}

	/** 定点编号 HEX 1 字节 根据不同的定点类型编号 */
	public void setPositionNumber(int positionNumber) {
		this.positionNumber = positionNumber;
	}

	/** 进出标识 HEX 1 字节 0 为进入，1 为离开 */
	public int getEnterOutStatus() {
		return enterOutStatus;
	}

	/** 进出标识 HEX 1 字节 0 为进入，1 为离开 */
	public void setEnterOutStatus(int enterOutStatus) {
		this.enterOutStatus = enterOutStatus;
	}

	/** 触发类型 HEX 1 字节 0：表示自动触发 1：表示手动触发 2：表示调试数据 3:wifi 报站类型 */
	public int getTriggerType() {
		return triggerType;
	}

	/** 触发类型 HEX 1 字节 0：表示自动触发 1：表示手动触发 2：表示调试数据 3:wifi 报站类型 */
	public void setTriggerType(int triggerType) {
		this.triggerType = triggerType;
	}

	/** 上车乘客数 HEX 1 字节 */
	public int getGetOnNumber() {
		return getOnNumber;
	}

	/** 上车乘客数 HEX 1 字节 */

	public void setGetOnNumber(int getOnNumber) {
		this.getOnNumber = getOnNumber;
	}

	/** 下车乘客数 HEX 1 字节 */
	public int getGetOffNumber() {
		return getOffNumber;
	}

	/** 下车乘客数 HEX 1 字节 */
	public void setGetOffNumber(int getOffNumber) {
		this.getOffNumber = getOffNumber;
	}

	/** 预留 HEX 2 字节 预留 */
	public int getReserved() {
		return reserved;
	}

	/** 预留 HEX 2 字节 预留 */
	public void setReserved(int reserved) {
		this.reserved = reserved;
	}

	@Override
	public String toString() {
		return "TerminalEnterOutPosition [createTime=" + createTime + ", lat=" + lat + ", lng=" + lng + ", speed="
				+ speed + ", setAngle=" + angle + ", altitude=" + altitude + ", positionType=" + positionType
				+ ", positionNumber=" + positionNumber + ", enterOutStatus=" + enterOutStatus + ", triggerType="
				+ triggerType + ", getOnNumber=" + getOnNumber + ", getOffNumber=" + getOffNumber + ", reserved="
				+ reserved + "]";
	}

}
